package com.stark.wechat.core;

import lombok.Builder;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

/**
 * 微信公众号配置
 *
 * @author <a href="mailto:mengbin@hotmail.com">Ben</a>
 * @version 1.0.0
 * @since 2024/5/23
 */
@Builder
@Getter
public class Config {

    /**
     * 微信域名
     */
    private String wechatDomain = "api.weixin.qq.com";

    /**
     * 第三方用户唯一凭证
     */
    private String appId;

    /**
     * 第三方用户唯一凭证密钥
     */
    private String appSecret;

    /**
     * 用于验证开发者服务器的token，必须为英文或数字，长度为3-32字符。
     */
    private String token;

    /**
     * 消息加密密钥，由43位字符组成，可随机修改，字符范围为A-Z，a-z，0-9
     */
    private String encodingAESKey;

    /**
     * 消息加解密类型
     */
    private EncryptionDecryptionMode encryptionDecryptionMode;

    /**
     * 建立连接超时毫秒数，默认 1000
     */
    private int connectTimeout = 1000;

    /**
     * 接收数据超时毫秒数，默认 3000
     */
    private int readTimeout = 3000;

    /**
     * 获取微信网关
     *
     * @return 微信网关
     */
    public String getWechatGateway() {
        String domain = StringUtils.defaultIfBlank(wechatDomain, "api.weixin.qq.com");
        if (domain.startsWith("http")) {
            domain = StringUtils.substringAfter(domain, "://");
        }
        if (domain.endsWith("/")) {
            domain = domain.substring(0, domain.length() - 1);
        }
        return "https://" + domain;
    }

}
